/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package metodo;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 *
 * @author Administrador
 */
public class metodosadmin {
    Connection conexion;

    public boolean conectar() {

        try {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            String BaseDeDatos = "jdbc:oracle:thin:@192.168.0.38:1521:XE";
            conexion = DriverManager.getConnection(BaseDeDatos, "PROYECTO_NUTRI", "proyecto");
            if (conexion != null) {
                System.out.println("Conexion exitosa a esquema BASE");
                return true;
            } else {
                System.out.println("Conexion fallida");
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        return false;
    }
    //------------------------------------------------Consulta tbs------------------------------------------------------
    public ResultSet Tablas(String A, String B, String C)
    {
    ResultSet rs=null;
    try{
        String sql="Select * from "+A+" where "+B+" like '"+C+"'";
        if (conectar()){
            Statement stt=conexion.createStatement();
            rs=stt.executeQuery(sql);
            }
                return rs;
        }
    catch(Exception e){
        System.out.print("Error al consultar: " + e);
    }
    return rs;
    }
    //------------------------------------------------Inserta Nutriologo---------------------------------------

    public String InsertNutri(String nombre, String pass, String correo, String direccion, String apellidos, String cedula, String rfc,
            int edad, String tipo, String sexo) {
        try {
            if (conectar()) {
                /* CallableStatement: Al igual del statement permite la ejecución de
                 instrucciones SQL pero con el soporte de parametros de entrada y salida 
                 como los manejados en los procedimeintos y funciones.
                 */

                CallableStatement cs = null;
        //Indicamos el nombre del procedimiento a llamar, por cada parametro 

        // que se tenga en el procedimiento se coloca un signo de interrogación
    cs=conexion.prepareCall(//Z+
            "BEGIN ALTA_USUARIO(?,?,?,?,?,?,?,?,?,?); END;");
    
    /*Se indica el envio de los parametros del procedimiento
    En este caso todos son entrada y se debe de indicar el tipo de dato de cada uno
    por ejemplo el primer parametro es de tipo varchar y hace referencia al nombre del usuario
    cs.setTipoDeDatoDelParametro(numero_de_parametro,valor_a_guardar)
    */
    cs.setString(1, nombre);
    cs.setString(2, pass);
    cs.setString(3, correo);
    cs.setString(4, direccion);
    cs.setString(5, apellidos);
    cs.setString(6, cedula);
    cs.setString(7, rfc);
    cs.setInt(8, edad);
    cs.setString(9, tipo);
    cs.setString(10, sexo);

    //cs.setString(8, fecha_alta);
                //cs.setString(9, fecha_factura);
                //Ejecutamos el procedimeinto
                cs.execute();

//cerramos la conexión
                conexion.close();
            }
            return "Nutriologo Guardado";
        } catch (Exception e) {
            return "Error al ejecutar el procedimiento: " + e;
        }
    }
    //------------------------------------------------Borrar Nutriologos---------------------------------------

   
    
    public String borra_nutri(int id_usuario){
    try{
        if(conectar()){CallableStatement cs=null;
            cs=conexion.prepareCall("BEGIN ELIMINAR_USUARIO(?); END;");
    
    cs.setInt(1, id_usuario);
   //Ejecutamos el procedimeinto
    cs.execute();
//cerramos la conexión
                conexion.close();
            }
            return "Registro Borrado";
        } catch (Exception e) {
            return "Error al ejecutar el procedimiento: " + e;
        }
    }

    //--------------------------------------------------Select Nutri-------------------------------------
    public ResultSet Nutriologos(String X) {
        ResultSet rs = null;
        try {
            String sql = "select rfc, cedula, usuario, apellidos, direccion, correo, sexo, id_usuario from usuario  where id_usuario like '" + X + "'";
            if (conectar()) {
                Statement stt = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
                rs = stt.executeQuery(sql);
            }
            return rs;
        } catch (Exception e) {
            System.out.print("Error al consultar: " + e);
        }
        return rs;
    }
    //-----------------------------------------------------------Modifica Nutri-----------------------------------------------------------
    public String modifica_nutri(int id, String rfc, String cedula, String usuario, String apellidos, String direccion, String correo){
    try{
        if(conectar()){
     
            
        CallableStatement cs=null;
        //Indicamos el nombre del procedimiento a llamar, por cada parametro 
        // que se tenga en el procedimiento se coloca un signo de interrogación
    cs=conexion.prepareCall("BEGIN UPDATE_NUTRI(?,?,?,?,?,?,?); END;");
    /*Se indica el envio de los parametros del procedimiento*/
    
    cs.setInt(1, id);
    cs.setString(2, rfc);
    cs.setString(3, cedula);
    cs.setString(4, usuario);
    cs.setString(5, apellidos);
    cs.setString(6, direccion);
    cs.setString(7, correo);
   //Ejecutamos el procedimeinto
    cs.execute();
    
//cerramos la conexión
    conexion.close();
    }
    return "Registro Actualizado";
    }
    catch(Exception e){
    return "Error al ejecutar el procedimiento: " + e;
    }
    }
    
    
    
    
    
    
    
    
    
    
    
    
}
